歡迎來到 Ian 的知識講堂,本篇會用說故事的方式跟大家聊聊全端寵兒 - JavaScript 的小故事。
想看更多技術與資訊議題/小故事,歡迎按讚或是追蹤我的粉絲專業: AwesomeCS 。
若想知道 C 語言與 UNIX 作業系統的小故事,可以參考該連結。
JavaScript 之父 – Brendan Eich 曾表示過自己並不喜歡這門程式語言,那 JavaScript 是如何在近年來一躍成為最受歡迎的程式語言之一呢?
布蘭登·艾克
布蘭登·艾克,美國程式技術專家與企業家, JavaScript 主要創造者與架構師,曾任 Mozilla 公司的技術長,並曾短暫擔任執行長。
wikipedia
最初, JavaScript 作為一個腳本語言,被設計來增加網頁與使用者的互動能力。開發團隊僅花了 10 天就完成 JS 的原型設計。
筆者仍記得: 我在 2020 年底參加交通大學碩士班的推薦甄試時,有與面試官聊到我的主要技能,內容大概是:
考官: 你最擅長什麼語言阿?
我: JavaScript 。
考官: 喔, JAVA 阿。
我: 不,是 JavaScript !
考官: Java...Script...?
我: 對, JavaScript 。
筆者十分肯定自己在當時有用正確的發音將 JavaScript 這個名詞給說出來。
上述的情境真的叫人好氣又好笑,不過 JavaScript 之所以會叫做 JavaScript ,其原因也是十分的隨性。
我想,正是因為開發團隊的隨性,才會讓現代的 JS Developer 叫苦連天。
上圖為 JavaScript 的神奇三角。
規則與定義方便開發者實作,標準化讓開發者無須煩惱平台遷移的重工發生。
-- 誰說的? Ian 說的。
1995 年, IE 瀏覽器誕生了,調皮的微軟直接將網景公司的 JS 直譯器進行逆向工程並基於 JavaScript 創造了 JScript 腳本語言。
這樣的舉動,會造成一樣的腳本程式在不同的瀏覽器上會有不同的運行結果。在當時,網頁開發者通常會把「用 Netscape 可達到最佳效果」或「用 IE 可達到最佳效果」的標誌放在首頁上。
對於商業化的工程工具,標準化是一定要走的路,像是: 我們目前在電腦上使用的浮點數運算也遵守了 IEEE 754 的規範。
隔年年底,網景公司向 ECMA 提交了語言標準, 1997 年 6 月, ECMA 以 JavaScript 為基礎制定了 ECMAScript 標準規範 ECMA-262 。
有了標準規範後,即使在當時的市面上有 JavaScript 、 JScript 、 ActionScript ,開發者也不用因為平台遷移而感到煩惱(儘管直譯器的設計與實作不盡相同)。
實際上,現今各家瀏覽器對 JavaScript 的實作仍不盡相同,開發者在開發時仍需考慮新標準的普及率,任何語法我們都可以在 Can i use 這個網站上得到答案。
雖然 JavaScript 的冰凍期不像機器學習一樣長達 50 年的時間,但 JS 的新標準推動停滯也造成了一些影響,請參考以下資料:
從上面的資料不難發現,從 ES3 到 ES5 發行,間隔竟然長達 10 年之久!
由於在語言的複雜性意見上出現分歧,所以 ES4 是被棄用的,這也是 JQuery 取得成功的原因之一。
時至今日, JavaScript 已成為許多人的入門語言首選,在金門大學資工系上,更是有教授以 JavaScript 作為教學的主力工具。
至於為何筆者會說 JavaScript 成王了呢? 我想,數字會說話:
上圖來源: ALPHAcamp 。
JavaScript 能夠有如此的成長速度,筆者認為主要原因有四:
ECMA 標準持續推動,讓 JavaScript 的語法越來越完整及多元,再加上這 10 年來智慧型手機的效能有非常可怕的成長速度。
筆者仍記得,在 10 年前左右的手機若有 1GHz 的時脈便非常嚇人,之後的 5 年間更是朝著高時脈、多核心的方向發展,在 2012 年推出的 Nexus 7 ,其效能就足夠運行 Ubuntu 作業系統了。
更別提現在十分流行的一頁式網頁設計都是在 Node.js 的幫助下完成的。
上面的用詞可能不太精確, SPA 主要是利用前端框架 + Webpack 工具實現,而這些工具都是符合 Node.js 標準的第三方套件。
用處可多了,時下最流行的區塊鏈、機器學習等技術, JS 開發者都可以在吸收其基礎知識後參一腳,像是:
我在去年的學生計算機年會就有簡單的提到 JS 的小故事,不過當時真的太緊張,有很多東西都漏講了,實在是有些可惜(?)
因此,我也趁這次機會重新研讀 JavaScript 的歷史並分享給大家~!
如果想學 JavaScript ,可以參考該問答串。